<?php
    class MY_Controller extends Controller {

        private $resource;
        private $priviledge;
        private $ci;
        private $acl;

        function __construct() {
            parent::Controller();
            
            $this->_init();

	        $this->acl = init_roles();

		    // обращаемся к нашему роутеру для определения контроллера и метода
            $router =& load_class('Router');

		    // устанавливаем конртоллер в класс и метод в привелегию
		    $this->resource  = $router->fetch_class();
		    $this->priviledge = $router->fetch_method();

		    // просто для удобства что бы не инициализировать позже в приложении
		    $this->ci =& get_instance();
		    $acl = $this->getACL();

		    //$user = $this->ci->system->getUser();
		    $role = $this->ci->system->getRole();

            //если пользователь не авторизирован(guest) пытается запросить что-то, то редиректим его на страницу авторизации
		    if(!$acl->isAllowed($this->system->getRole('rolename'), $this->getResource(), $this->getPriviledge()) && $role['rolename'] == 'guest') {
		        redirect('member/login','refresh');
		    } elseif (!$acl->isAllowed($this->system->getRole('rolename'), $this->getResource(), $this->getPriviledge()) && $role['rolename'] != 'guest') {
		        redirect('','refresh');
		    }
		    		    

		    $this->output->enable_profiler(TRUE);
        }

        function _init() {
            //Override by child classes
        }
        
        function getAcl() {
            return $this->acl;
        }

        function getResource() {
            return $this->resource;
        }

        function getPriviledge() {
            return $this->priviledge;
        }                
    }
?>